1
현대적 C++의 효율성과 표현력
AI013Lesson 3
00:00

현대적 C++(C++11/14/17)는 제로-비용 추상화 저수준 하드웨어 제어와 고수준 가독성 사이의 격차를 해소합니다. 효율성은 결정론적인 메모리 관리로 달성되며, 표현력은 컴파일 시점 로직을 통해 향상됩니다.

1. 메모리 레이아웃: std::array vs. std::vector

std::array 은 C 스타일 배열에 대한 현대적인 래퍼이며, 스택 고정된 크기로 컴파일 시점에 알려진 상태에서 할당됩니다. 반면, std::vector 에 위치하며 동적으로 확장됩니다. 비록 std::vector 는 기하학적 성장 계수(종종 $1.5\times$ 또는 $2\times$)를 사용하지만, 현대적 C++는 shrink_to_fit() 사용되지 않는 용량을 회수할 수 있도록 제공하여, 골랭크와 같은 관리형 언어보다 더 엄격한 제어가 가능합니다.

2. SFINAE 및 타입 안전성

통해 std::enable_ifstd::is_enum개발자는 치환 실패는 오류가 아니다(SFINAE)를 구현할 수 있습니다. 이를 통해 컴파일 시점에 타입 특성에 따라 특정 함수 오버로드를 선택할 수 있으며, 예를 들어 그들의 std::underlying_type을 사용하여 열거형에 대한 일반 스트림 연산자를 생성하는 등이 있습니다.

// C++11 메모리 관리 핵심 요소
v.push_back(std::move(obj)); // 이동 세미틱스
arr.at(0); // 경계 검사
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>